////
//// Created by 1065246 on 2023/5/17.
////
//#include <cstring>
//#include "iostream"
//#include "set"
//#include "unordered_set"
//#include "song.cpp"
//#include "MyStudent.cpp"
//#include "MyOrder.cpp"
//#include "MyBook.cpp"
//
//int main() {
//
//    std::set<int> set1;
//    set1.insert(1);
//    set1.insert(11);
//    set1.insert(2);
//    set1.insert(2);
//    for (const auto &item: set1) {
//        std::cout << item << std::endl;
//    }
//
//    std::cout << "set with song......" << std::endl;
//    std::set<song> set2;
//    song s1(1, 11);
//    song s2(2, 33);
//    song s3(2, 22);
//    set2.insert(s1);
//    set2.insert(s2);
//    set2.insert(s3);
//    for (const auto &item: set2) {
//        std::cout << item.m_id << std::endl;
//    }
//
//    /*std::cout << "unordered_set with MyStudent......" << std::endl;
//    std::unordered_set<MyStudent,as> set3;
//    MyStudent stu1("z", 21);
//    MyStudent stu2("z", 22);
//    MyStudent stu3("z", 23);
//    MyStudent stu4("z", 23);
//    set3.insert(&stu1);
//    set3.insert(&stu2);
//    set3.insert(&stu3);
//    set3.insert(&stu4);
//    for (const auto &item: set3) {
//        std::cout << item->name << std::endl;
//    }*/
//
//     //https://blog.csdn.net/u010323563/article/details/111870855
//     //https://blog.csdn.net/y109y/article/details/82669620
//    std::cout << "unordered_set with MyOrder by hash and equal......" << std::endl;
//    MyOrder sd1("jpm",1);
//    MyOrder sd2("jpm",1);
//    std::unordered_set<MyOrder, hash_name> sduset;
//
//    sduset.insert(sd1);
//    sduset.insert(sd2);
//    for (const auto &item: sduset) {
//        std::cout << item.age << std::endl;
//    }
//
//    std::cout << "unordered_set with MyBook by hash and equal......" << std::endl;
//    std::unordered_set<MyBook> books;
//    MyBook book1("z",1);
//    MyBook book2("z",2);
//    MyBook book3("z",2);
//    books.insert(book1);
//    books.insert(book2);
//    books.insert(book3);
//    for (const auto &item: books) {
//        std::cout << item.age << std::endl;
//    }
//
//}